package amazing.core.module;

import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Repeatable(RequiredModules.class)
public @interface RequiredModule {
	/***
	 * 
	 * @return The name of the required module
	 */
	String moduleName();
	/***
	 * if set it'll require that the module be at least the version specified
	 * @return the lowest version of the module required that will work with the requiring module
	 */
	String lowestVersion() default "";
	/***
	 * if set it'll require that the module be at most the version specified
	 * @return the highest version of the module required that will work with the requiring module
	 */
	String highestVersion() default "";
	/***
	 * 	allow the module to include the required module from the specified file if it's not already loaded
	 * if not present will re-look from the modulesDirectories list in the properties file
	 * @return the directory to import the module from
	 */
	String importFrom() default "";
}
